#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

const char* exe = "other_exe";

int main()
{
 //  putenv("myenv=66666");

  extern char** environ;
  pid_t id = fork();
 
  if (id == 0)
  {
    char* const myargv[] = { "other_exe", "-a", "-b","-c", NULL };
    printf("before: i am a process, pid: %d, ppid: %d\n", getpid(), getppid());
    sleep(3);
    char* const myenv[] = {"myval=111", "mypath=7777"};
     // execl("./other_exe", "other_exe", NULL);
    // execv("/usr/bin/ls", myargv);
     execv("./other_exe", myargv);
    // execvp("ls", myargv);
    execle("./other_exe", "other_exe", "-a", "-b", "-c", NULL, environ);
    execle("./other_exe", "other_exe", "-a", "-b", "-c", NULL, myenv);
    
    printf("before: i am a process, pid: %d, ppid: %d\n", getpid(), getppid());
    exit(1);
  }

  pid_t ret = waitpid(id, NULL, 0);
  if (ret == id)
  {
    printf("wait success, father pid: %d, ret pid: %d\n", getpid(), ret);
  }
  
  return 0;
}

